#include<iostream>

using namespace std;
//单一数字的phi
int phi(int x)
{
	int ret=x;
	for(int i=2;i<=x/i;i++)
	{
		if(x%i==0)
		{
			while(x%i==0) x/=i;
			ret=ret/i*(i-1);
		}
	}

	if(x>1) ret=ret/x*(x-1);

	return ret;
}

const int N=1e6+10;
int p[N],cnt;
bool st[N];
int phis[N];
typedef long long ll;
//范围phi，同时求出质数
void get_phi(int n)
{
	for(int i=2;i<=n;i++)
	{
		if(!st[i]) 
		{
			p[cnt++]=i;
			phis[i]=i-1;
		}

		for(int j=0;1ll*p[j]*i<=n;j++)
		{
			int x=p[j]*i;
			st[x]=true;

			if(i%p[j]==0)
			{
				phis[x]=p[j]*phis[i];
				break;
			}
			else
			{
				phis[x]=(p[j]-1)*phis[i];
			}
		}
	}
}
int main()
{
	int n;cin>>n;

	cout<<phi(n)<<endl;

	get_phi(n);
	for(int i=2;i<=n;i++)
	{
		cout<<phis[i]<<" ";
	}
	cout<<endl;
}